Editor polish: paint SFX, duplicate keeps slots, review-skill convention#433
Merged
Conversation
Registers a paintApply SFX (with rate/volume jitter + a 60ms gap so rapid multi-face painting doesn't machine-gun), wires the sfx:paint-apply bus event, and emits it from the material-paint click chokepoint in the selection manager (fires on apply, not hover/preview). Adds the audio asset to the editor app's public resources. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Duplicating an item drops to the catalog placement flow, which rebuilds the draft from the asset + transform and never carried node.slots — so the copy lost every painted slot override. Thread slots through the draft create path: useDraftNode.create seeds it onto the draft and commit() forwards it to the final node, the placement coordinator passes it to its lazy wall/ceiling draft creates, and the item move tool supplies node.slots for both the floor (direct create) and wall/ceiling (coordinator) duplicate paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… nodes Adds a Section B rule to the review-architecture skill: a new node kind or geometry change that exposes paintable parts must carry overrides in a schema `slots` record resolved via def.capabilities.paint (and thread it through clone/duplicate/preset paths), and texturable def.geometry must emit UVs in metres (1 unit = 1 m) so catalog finishes tile. Surfaced in the skill description too. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Three small editor-side polish items (split into one commit each):
feat(sfx)— paint-apply sound. Registers apaintApplySFX (rate/volume jitter + 60 ms min interval so rapid multi-face painting doesn't machine-gun), wires thesfx:paint-applybus event, and emits it from the material-paint click chokepoint in the selection manager (fires on apply, not hover/preview). Addsapps/editor/public/audios/sfx/paint_apply.mp3.fix(item)— duplicated items keep their painted slot materials. Duplicating an item drops into the catalog placement flow, which rebuilt the draft fromasset+ transform and never carriednode.slots, so the copy lost every painted slot. Threadsslotsthrough the draft path:useDraftNode.createseeds it,commit()forwards it to the final node, the placement coordinator passes it to its lazy wall/ceiling draft creates, and the item move tool suppliesnode.slotsfor both the floor and wall/ceiling duplicate paths. (Other kinds clone viastructuredClone+parse+createNode, which already preserved slots — this was item-specific.)docs(review-skill)— slots + world-scale-UV convention. Adds a Section B rule toreview-architecture: a new node kind / geometry change exposing paintable parts must carry overrides in a schemaslotsrecord resolved viadef.capabilities.paint(and thread it through clone/duplicate/preset paths), and texturabledef.geometrymust emit UVs in metres (1 unit = 1 m) so catalog finishes tile. Surfaced in the skill description.How to test
.agents/skills/review-architecture/SKILL.mdand the new convention bullets.Screenshots / screen recording
N/A — audio + behavior + docs.
Checklist
bun dev— static checks only (typecheck + biome clean); runtime SFX/duplicate behavior validated locally by the authorbiome checkclean)mainbranch